1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.glib.gqueue;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 extern (C):
35 
36 alias _GQueue GQueue;
37 
38 struct _GQueue
39 {
40 	GList* head;
41 	GList* tail;
42 	guint length;
43 }													
44 
45 version(Derelict_Link_Static)
46 {
47     extern( C ) nothrow 
48     {
49         GQueue* g_queue_new();
50         void g_queue_free(GQueue* queue);
51         void g_queue_free_full(GQueue* queue, GDestroyNotify free_func);
52         void g_queue_init(GQueue* queue);
53         void g_queue_clear(GQueue* queue);
54         gboolean g_queue_is_empty(GQueue* queue);
55         guint g_queue_get_length(GQueue* queue);
56         void g_queue_reverse(GQueue* queue);
57         GQueue* g_queue_copy(GQueue* queue);
58         void g_queue_foreach(GQueue* queue, GFunc func, gpointer user_data);
59         GList* g_queue_find(GQueue* queue, gconstpointer data);
60         GList* g_queue_find_custom(GQueue* queue, gconstpointer data, GCompareFunc func);
61         void g_queue_sort(GQueue* queue, GCompareDataFunc compare_func, gpointer user_data);
62         void g_queue_push_head(GQueue* queue, gpointer data);
63         void g_queue_push_tail(GQueue* queue, gpointer data);
64         void g_queue_push_nth(GQueue* queue, gpointer data, gint n);
65         gpointer g_queue_pop_head(GQueue* queue);
66         gpointer g_queue_pop_tail(GQueue* queue);
67         gpointer g_queue_pop_nth(GQueue* queue, guint n);
68         gpointer g_queue_peek_head(GQueue* queue);
69         gpointer g_queue_peek_tail(GQueue* queue);
70         gpointer g_queue_peek_nth(GQueue* queue, guint n);
71         gint g_queue_index(GQueue* queue, gconstpointer data);
72         gboolean g_queue_remove(GQueue* queue, gconstpointer data);
73         guint g_queue_remove_all(GQueue* queue, gconstpointer data);
74         void g_queue_insert_before(GQueue* queue, GList* sibling, gpointer data);
75         void g_queue_insert_after(GQueue* queue, GList* sibling, gpointer data);
76         void g_queue_insert_sorted(GQueue* queue, gpointer data, GCompareDataFunc func, gpointer user_data);
77         void g_queue_push_head_link(GQueue* queue, GList* link_);
78         void g_queue_push_tail_link(GQueue* queue, GList* link_);
79         void g_queue_push_nth_link(GQueue* queue, gint n, GList* link_);
80         GList* g_queue_pop_head_link(GQueue* queue);
81         GList* g_queue_pop_tail_link(GQueue* queue);
82         GList* g_queue_pop_nth_link(GQueue* queue, guint n);
83         GList* g_queue_peek_head_link(GQueue* queue);
84         GList* g_queue_peek_tail_link(GQueue* queue);
85         GList* g_queue_peek_nth_link(GQueue* queue, guint n);
86         gint g_queue_link_index(GQueue* queue, GList* link_);
87         void g_queue_unlink(GQueue* queue, GList* link_);
88         void g_queue_delete_link(GQueue* queue, GList* link_);
89     }
90 }
91 else
92 {
93     extern( C ) nothrow 
94     {
95         alias da_g_queue_new = GQueue* function();																						
96         alias da_g_queue_free = void function(GQueue* queue);																			
97         alias da_g_queue_free_full = void function(GQueue* queue, GDestroyNotify free_func);											
98         alias da_g_queue_init = void function(GQueue* queue);																			
99         alias da_g_queue_clear = void function(GQueue* queue);																			
100         alias da_g_queue_is_empty = gboolean function(GQueue* queue);																	
101         alias da_g_queue_get_length = guint function(GQueue* queue);																	
102         alias da_g_queue_reverse = void function(GQueue* queue);																		
103         alias da_g_queue_copy = GQueue* function(GQueue* queue);																		
104         alias da_g_queue_foreach = void function(GQueue* queue, GFunc func, gpointer user_data);										
105         alias da_g_queue_find = GList* function(GQueue* queue, gconstpointer data);														
106         alias da_g_queue_find_custom = GList* function(GQueue* queue, gconstpointer data, GCompareFunc func);							
107         alias da_g_queue_sort = void function(GQueue* queue, GCompareDataFunc compare_func, gpointer user_data);						
108         alias da_g_queue_push_head = void function(GQueue* queue, gpointer data);														
109         alias da_g_queue_push_tail = void function(GQueue* queue, gpointer data);														
110         alias da_g_queue_push_nth = void function(GQueue* queue, gpointer data, gint n);												
111         alias da_g_queue_pop_head = gpointer function(GQueue* queue);																	
112         alias da_g_queue_pop_tail = gpointer function(GQueue* queue);																	
113         alias da_g_queue_pop_nth = gpointer function(GQueue* queue, guint n);															
114         alias da_g_queue_peek_head = gpointer function(GQueue* queue);																	
115         alias da_g_queue_peek_tail = gpointer function(GQueue* queue);																	
116         alias da_g_queue_peek_nth = gpointer function(GQueue* queue, guint n);															
117         alias da_g_queue_index = gint function(GQueue* queue, gconstpointer data);														
118         alias da_g_queue_remove = gboolean function(GQueue* queue, gconstpointer data);													
119         alias da_g_queue_remove_all = guint function(GQueue* queue, gconstpointer data);												
120         alias da_g_queue_insert_before = void function(GQueue* queue, GList* sibling, gpointer data);									
121         alias da_g_queue_insert_after = void function(GQueue* queue, GList* sibling, gpointer data);									
122         alias da_g_queue_insert_sorted = void function(GQueue* queue, gpointer data, GCompareDataFunc func, gpointer user_data);		
123         alias da_g_queue_push_head_link = void function(GQueue* queue, GList* link_);													
124         alias da_g_queue_push_tail_link = void function(GQueue* queue, GList* link_);													
125         alias da_g_queue_push_nth_link = void function(GQueue* queue, gint n, GList* link_);											
126         alias da_g_queue_pop_head_link = GList* function(GQueue* queue);																
127         alias da_g_queue_pop_tail_link = GList* function(GQueue* queue);																
128         alias da_g_queue_pop_nth_link = GList* function(GQueue* queue, guint n);														
129         alias da_g_queue_peek_head_link = GList* function(GQueue* queue);																
130         alias da_g_queue_peek_tail_link = GList* function(GQueue* queue);																
131         alias da_g_queue_peek_nth_link = GList* function(GQueue* queue, guint n);														
132         alias da_g_queue_link_index = gint function(GQueue* queue, GList* link_);														
133         alias da_g_queue_unlink = void function(GQueue* queue, GList* link_);															
134         alias da_g_queue_delete_link = void function(GQueue* queue, GList* link_);		
135     }
136 
137     __gshared
138     {
139         da_g_queue_new g_queue_new; 
140         da_g_queue_free g_queue_free; 
141         da_g_queue_free_full g_queue_free_full; 
142         da_g_queue_init g_queue_init; 
143         da_g_queue_clear g_queue_clear; 
144         da_g_queue_is_empty g_queue_is_empty; 
145         da_g_queue_get_length g_queue_get_length; 
146         da_g_queue_reverse g_queue_reverse; 
147         da_g_queue_copy g_queue_copy; 
148         da_g_queue_foreach g_queue_foreach; 
149         da_g_queue_find g_queue_find; 
150         da_g_queue_find_custom g_queue_find_custom; 
151         da_g_queue_sort g_queue_sort; 
152         da_g_queue_push_head g_queue_push_head; 
153         da_g_queue_push_tail g_queue_push_tail; 
154         da_g_queue_push_nth g_queue_push_nth; 
155         da_g_queue_pop_head g_queue_pop_head; 
156         da_g_queue_pop_tail g_queue_pop_tail; 
157         da_g_queue_pop_nth g_queue_pop_nth; 
158         da_g_queue_peek_head g_queue_peek_head; 
159         da_g_queue_peek_tail g_queue_peek_tail; 
160         da_g_queue_peek_nth g_queue_peek_nth; 
161         da_g_queue_index g_queue_index; 
162         da_g_queue_remove g_queue_remove; 
163         da_g_queue_remove_all g_queue_remove_all; 
164         da_g_queue_insert_before g_queue_insert_before; 
165         da_g_queue_insert_after g_queue_insert_after; 
166         da_g_queue_insert_sorted g_queue_insert_sorted; 
167         da_g_queue_push_head_link g_queue_push_head_link; 
168         da_g_queue_push_tail_link g_queue_push_tail_link; 
169         da_g_queue_push_nth_link g_queue_push_nth_link; 
170         da_g_queue_pop_head_link g_queue_pop_head_link; 
171         da_g_queue_pop_tail_link g_queue_pop_tail_link; 
172         da_g_queue_pop_nth_link g_queue_pop_nth_link; 
173         da_g_queue_peek_head_link g_queue_peek_head_link; 
174         da_g_queue_peek_tail_link g_queue_peek_tail_link; 
175         da_g_queue_peek_nth_link g_queue_peek_nth_link; 
176         da_g_queue_link_index g_queue_link_index; 
177         da_g_queue_unlink g_queue_unlink; 
178         da_g_queue_delete_link g_queue_delete_link; 
179     }
180 }